<?php
      // application/models/Role.php
       
      class Model_Role
      {
          protected $_name;
          protected $_id;
       
          public function __construct(array $options = null)
          {
              if (is_array($options)) {
                  $this->setOptions($options);
              }
          }
       
          public function __set($name, $value)
          {
              $method = 'set' . $name;
              if (('mapper' == $name) || !method_exists($this, $method)) {
                  throw new Exception('Invalid role property');
              }
              $this->$method($value);
          }
       
          public function __get($name)
          {
          	  $method = 'get' . $name;
              
              if (('mapper' == $name) || !method_exists($this, $method)) {
                  throw new Exception('Invalid role property');
              }
              return $this->$method();
          }
       
          public function setOptions(array $options)
          {
              $methods = get_class_methods($this);
              foreach ($options as $key => $value) {
                  $method = 'set' . ucfirst($key);
                  if (in_array($method, $methods)) {
                      $this->$method($value);
                  }
              }
              return $this;
          }
       
          public function setName($role_name)
          {
              $this->_name = (string) $role_name;
              return $this;
          }
      
          public function getName()
          {
              return $this->_name;
          }

          public function setId($role_id)
          {
              $this->_id = (int) $role_id;
              return $this;
          }
          
          public function getId()
          {
              return $this->_id;
          }
      }